জাভার কনকারেন্সি মাল্টিথ্রেডিং পরিচালনা করার জন্য একটি শক্তিশালী ফিচার। নিচে Thread.start(), Thread.sleep(), এবং Thread.join() এর ভূমিকা ও ব্যবহার বিস্তারিতভাবে ব্যাখ্যা করা হলো:
১. Thread.start()
- কাজ: নতুন একটি থ্রেড শুরু করে এবং থ্রেডের
run()মেথড এক্সিকিউট করে। - ব্যাখ্যা: এটি সরাসরি
run()কল না করে একটি নতুন থ্রেড তৈরি করে। ফলে কোড মূল থ্রেড থেকে আলাদাভাবে চলে।
উদাহরণ:
class MyThread extends Thread {
@Override
public void run() {
System.out.println("Thread is running: " + Thread.currentThread().getName());
}
}
public class ThreadStartExample {
public static void main(String[] args) {
MyThread thread1 = new MyThread();
thread1.start(); // নতুন থ্রেড শুরু করবে
}
}
২. Thread.sleep()
- কাজ: থ্রেডকে নির্দিষ্ট সময়ের জন্য সাময়িকভাবে থামিয়ে দেয়।
- ব্যাখ্যা: এটি থ্রেডের এক্সিকিউশনকে নির্দিষ্ট মিলিসেকেন্ডের জন্য থামায়, তবে
InterruptedExceptionথ্রো করে যদি অন্য থ্রেড এটি বাধাগ্রস্ত করে।
উদাহরণ:
public class ThreadSleepExample {
public static void main(String[] args) {
Thread thread = new Thread(() -> {
try {
System.out.println("Thread is running...");
Thread.sleep(2000); // ২ সেকেন্ড থ্রেড থামানো
System.out.println("Thread resumed after sleep.");
} catch (InterruptedException e) {
System.out.println("Thread was interrupted.");
}
});
thread.start();
}
}
৩. Thread.join()
- কাজ: একটি থ্রেড শেষ না হওয়া পর্যন্ত অন্য থ্রেডকে অপেক্ষা করায়।
- ব্যাখ্যা: এটি মূলত একাধিক থ্রেডের ক্রমিক এক্সিকিউশন নিশ্চিত করতে ব্যবহৃত হয়।
উদাহরণ:
public class ThreadJoinExample {
public static void main(String[] args) {
Thread thread1 = new Thread(() -> {
try {
System.out.println("Thread 1 is running...");
Thread.sleep(3000); // ৩ সেকেন্ড থামানো
System.out.println("Thread 1 finished.");
} catch (InterruptedException e) {
System.out.println("Thread 1 interrupted.");
}
});
Thread thread2 = new Thread(() -> {
System.out.println("Thread 2 is running...");
});
thread1.start();
thread2.start();
try {
thread1.join(); // Thread 1 শেষ না হওয়া পর্যন্ত অপেক্ষা
System.out.println("Thread 1 completed. Now executing main thread.");
} catch (InterruptedException e) {
System.out.println("Main thread interrupted.");
}
}
}
বিস্তারিত উদাহরণ: সবকিছু একত্রে
class Task extends Thread {
private String taskName;
public Task(String taskName) {
this.taskName = taskName;
}
@Override
public void run() {
try {
System.out.println(taskName + " is running...");
Thread.sleep(2000); // ২ সেকেন্ড থ্রেড থামানো
System.out.println(taskName + " completed.");
} catch (InterruptedException e) {
System.out.println(taskName + " was interrupted.");
}
}
}
public class ConcurrencyExample {
public static void main(String[] args) {
Task task1 = new Task("Task 1");
Task task2 = new Task("Task 2");
task1.start(); // Task 1 শুরু
task2.start(); // Task 2 শুরু
try {
task1.join(); // Task 1 শেষ না হওয়া পর্যন্ত অপেক্ষা
task2.join(); // Task 2 শেষ না হওয়া পর্যন্ত অপেক্ষা
} catch (InterruptedException e) {
System.out.println("Main thread interrupted.");
}
System.out.println("All tasks completed. Main thread finished.");
}
}
Thread.start(): নতুন থ্রেড শুরু করে।Thread.sleep(): থ্রেডকে নির্দিষ্ট সময়ের জন্য থামায়।Thread.join(): নির্দিষ্ট থ্রেড শেষ না হওয়া পর্যন্ত অপেক্ষা করে।
এই কনসেপ্টগুলো সঠিকভাবে বুঝে ব্যবহার করলে মাল্টিথ্রেডিং অপারেশন সহজ ও কার্যকর করা যায়।
Content added By
Read more